package com.tarena.csmall.rocket;

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
import org.junit.Test;

import java.nio.charset.StandardCharsets;

/**
  测试生产消息,发送消息的逻辑
 */
public class MyTagProduct {
    /**
     * 向rocketmq发送第一条消息
     */
    @Test
    public void sendTagsTopic() throws Exception {
    //1.准备一个生产者对象,开启长链接
        DefaultMQProducer producer=new DefaultMQProducer();
        //对当前producer设置分组
        producer.setProducerGroup("third-producer-group");
        //连接nameserver localhost:9876
        producer.setNamesrvAddr("localhost:9876");
        //开启长链接
        producer.start();
    //2.封装一个消息对象,我们想要发送的内容,只是消息的一部分
        //创建一个消息对象
        Message message=new Message();
        //消息携带的内容 body
        String msg="当期发送第三条消息";
        message.setBody(msg.getBytes(StandardCharsets.UTF_8));
        //设置消息主题,分类,按业务分类
        message.setTopic("third-topic-a");
        //查询消息使用的值,设置一般和业务挂钩,比如 userId
        //message.setKeys("testkey");
        message.setTags("CART");
        for (int i=0;i<10;i++){
            SendResult send = producer.send(message);
            //result解析获取发送相关的信息
            System.out.println("发送状态:"+send.getSendStatus());
            System.out.println("消息Id:"+send.getMsgId());
            System.out.println("消息到达主题,队列,broker信息:"+send.getMessageQueue());
        }

    }
}
